Learning Rate Scheduler এবং ReduceLROnPlateau

Machine Learning - কেরাস (Keras) - Callbacks এবং Early Stopping
235

Learning Rate (LR) মেশিন লার্নিং মডেল ট্রেনিং প্রক্রিয়ার একটি গুরুত্বপূর্ণ প্যারামিটার। এটি নির্ধারণ করে যে, প্রতিটি ধাপে মডেলের প্যারামিটার কতটা পরিবর্তন করবে। সঠিক learning rate মডেলকে দ্রুত এবং কার্যকরভাবে প্রশিক্ষিত করতে সাহায্য করে। তবে, মডেল ট্রেনিং এর সময় লার্নিং রেট পরিবর্তন করা দরকার হতে পারে, যেমন প্রথমে উচ্চ লার্নিং রেট দিয়ে শুরু করে, ধীরে ধীরে এটি কমিয়ে আনা। এখানে Learning Rate Scheduler এবং ReduceLROnPlateau এর ভূমিকা এবং ব্যবহার নিয়ে আলোচনা করা হয়েছে।


১. Learning Rate Scheduler

Learning Rate Scheduler হল একটি কৌশল যা ট্রেনিং চলাকালীন learning rate পরিবর্তন করার জন্য ব্যবহৃত হয়। এটি একটি নির্দিষ্ট সময় বা পর্বের পর learning rate কমানোর জন্য ব্যবহৃত হয়, যাতে মডেল ট্রেনিংয়ের শেষ দিকে আরও ভালো কনভার্জেন্স (convergence) অর্জন করা যায়।

Learning Rate Scheduler এর ধরণ:

  1. Step Decay: এই কৌশলে একটি নির্দিষ্ট পর্বের পরে learning rate একটি নির্দিষ্ট অনুপাতের মাধ্যমে কমে যায়।

    উদাহরণ:

    from tensorflow.keras.callbacks import LearningRateScheduler
    import numpy as np
    
    def step_decay(epoch):
        initial_lr = 0.1
        drop = 0.5
        epoch_drop = 10.0
        lr = initial_lr * np.pow(drop, np.floor((1+epoch)/epoch_drop))
        return lr
    
    lr_scheduler = LearningRateScheduler(step_decay)
    
  2. Exponential Decay: এতে learning rate প্রতি epoch এ একটি এক্সপোনেনশিয়াল গতিতে কমে যায়।

    উদাহরণ:

    from tensorflow.keras.callbacks import LearningRateScheduler
    def exp_decay(epoch):
        initial_lr = 0.1
        k = 0.1
        return initial_lr * np.exp(-k * epoch)
    
    lr_scheduler = LearningRateScheduler(exp_decay)
    
  3. Cosine Decay: এখানে learning rate একটি কসমিক কার্ভের মতো ধীরে ধীরে কমে যায়।

    উদাহরণ:

    from tensorflow.keras.callbacks import LearningRateScheduler
    
    def cosine_decay(epoch):
        initial_lr = 0.1
        max_epochs = 50
        return 0.5 * initial_lr * (1 + np.cos(np.pi * epoch / max_epochs))
    
    lr_scheduler = LearningRateScheduler(cosine_decay)
    

২. ReduceLROnPlateau

ReduceLROnPlateau একটি কলব্যাক যা মডেল ট্রেনিং চলাকালীন validation loss (অথবা যে কোনো মেট্রিক) মনিটর করে এবং যদি এটি একটি নির্দিষ্ট সংখ্যক epoch এর জন্য পরিবর্তিত না হয়, তবে learning rate কমিয়ে দেয়। এটি বিশেষত তখন ব্যবহৃত হয় যখন মডেল ট্রেনিং শেষের দিকে পৌঁছায়, কিন্তু আর কোনো উন্নতি দেখা যাচ্ছে না।

ReduceLROnPlateau এর কাজের মূল ধারণা:

  • Monitor: একটি নির্দিষ্ট মেট্রিক (যেমন validation loss বা accuracy) ট্র্যাক করা হয়।
  • Patience: যদি নির্দিষ্ট পরিমাণ epoch পর্যন্ত মেট্রিকের উন্নতি না হয়, তবে লার্নিং রেট কমিয়ে দেয়া হয়।
  • Factor: লার্নিং রেট কমানোর অনুপাত।
  • Min_LR: লার্নিং রেট কমানোর সর্বনিম্ন সীমা।

উদাহরণ:

from tensorflow.keras.callbacks import ReduceLROnPlateau

# ReduceLROnPlateau কনফিগার করা
lr_reduction = ReduceLROnPlateau(monitor='val_loss', 
                                 patience=5, 
                                 factor=0.5, 
                                 min_lr=0.00001, 
                                 verbose=1)

# মডেল ট্রেনিংয়ের সময় ব্যবহার করা
model.fit(X_train, y_train, epochs=50, callbacks=[lr_reduction], validation_data=(X_val, y_val))

এই উদাহরণে:

  • monitor: 'val_loss' হচ্ছে সেই মেট্রিক যা মনিটর করা হচ্ছে (অথবা আপনি 'accuracy' বা অন্য কোনো মেট্রিকও ব্যবহার করতে পারেন)।
  • patience: এই সংখ্যক epoch পরেও যদি মেট্রিকের উন্নতি না হয়, তবে লার্নিং রেট কমানো হবে।
  • factor: লার্নিং রেটের কতটা অংশ কমিয়ে দেয়া হবে (এখানে 0.5, অর্থাৎ লার্নিং রেটের অর্ধেক)।
  • min_lr: লার্নিং রেটের সর্বনিম্ন সীমা, এর নিচে কমানো হবে না।

কেন ReduceLROnPlateau ব্যবহার করবেন?

  • বহু epoch পরেও ভালো ফলাফল না আসলে: অনেক সময় মডেল ট্রেনিংয়ের শেষে পারফরম্যান্স স্ট্যাগনেট হয়ে যায়। এরকম অবস্থায়, লার্নিং রেট কমিয়ে দিয়ে মডেলকে আরও ভালো কনভার্জ করতে সহায়তা করা যায়।
  • অবস্থানের উপর নির্ভরশীল ট্রেনিং: মডেল যখন শিখতে শুরু করে এবং ট্রেনিং প্রক্রিয়ায় বড় পরিবর্তন দেখা যায়, তখন লার্নিং রেট কিছুটা বড় রাখা উচিত, কিন্তু একবার ফলাফল স্থিতিশীল হয়ে গেলে ছোট লার্নিং রেট ব্যবহৃত হতে পারে।

কেন Learning Rate Scheduler এবং ReduceLROnPlateau ব্যবহার করবেন?

  1. শ্রেষ্ঠ কনভার্জেন্স:
    • লার্নিং রেট সঠিকভাবে কনফিগার করা হলে মডেল দ্রুত এবং কার্যকরীভাবে কনভার্জ করতে পারে।
    • Learning Rate Scheduler মডেল ট্রেনিংয়ের সময় লার্নিং রেট কমাতে সহায়তা করে, যাতে শেষের দিকে দ্রুত কনভার্জেন্স হয়।
    • ReduceLROnPlateau মডেল স্ট্যাগনেট হলে স্বয়ংক্রিয়ভাবে লার্নিং রেট কমায়, যা আরও ভালো ফলাফল পেতে সহায়তা করে।
  2. পারফরম্যান্সে উন্নতি:
    • সঠিক সময়ে লার্নিং রেট কমানোর মাধ্যমে আপনি মডেলের পারফরম্যান্স এবং জেনারালাইজেশনের জন্য একটি সুন্দর ব্যালান্স পেতে পারেন।
    • ট্রেনিংয়ের প্রথমদিকে একটি উচ্চ লার্নিং রেট রাখতে পারে, যাতে মডেল দ্রুত শিখতে পারে, এবং পরবর্তীতে সেটি কমিয়ে দিতে হবে যাতে মডেল আরও নিখুঁতভাবে শিখতে পারে।
  3. বয়স দীর্ঘ করা:
    • Learning Rate Scheduler এবং ReduceLROnPlateau আপনার মডেলের ট্রেনিং জীবনকে দীর্ঘায়িত করতে সাহায্য করে, কারণ মডেল ধীরে ধীরে আরও ভালো কনভার্জ করতে শুরু করে, যা মডেল প্রশিক্ষণের শেষের দিকে গুরুত্বপূর্ণ হয়ে ওঠে।

সারাংশ

  • Learning Rate Scheduler লার্নিং রেট ধীরে ধীরে কমিয়ে দেয় নির্দিষ্ট শর্তে, যা মডেলকে শেষ পর্যন্ত আরও নিখুঁতভাবে শিখতে সহায়তা করে।
  • ReduceLROnPlateau একটি কলব্যাক যা লার্নিং রেট কমায় যদি মেট্রিকের কোনো উন্নতি না হয়।

এই দুটি কৌশলই মডেল ট্রেনিংয়ের জন্য খুবই কার্যকরী, বিশেষ করে যখন মডেল প্রশিক্ষণের শেষের দিকে পৌঁছায় এবং ফলাফলের স্থিতিশীলতা দেখতে পাওয়া যায়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...